package leetcode.l0613;

/**
 * @author Retain
 * @date 2021/6/13 17:10
 */
public class Easy_第一个错误的版本_278 {

    /**
     * 由于第一个版本错误之后，后面都会错，想到使用二分查找
     * @param n
     * @return
     */
    public int firstBadVersion(int n) {
        if (n <= 1) {
            return 1;
        }
        int left = 1;
        int right = n;
        while (left < right) {
            // 这里重点在于mid的计算，为left+一半的距离，因为防止溢出
            int mid = left + (right - left) / 2;
            if (isBadVersion(mid)) {
                right = mid;
            }else {
                left = mid + 1;
            }
        }
        return right;
    }

    /**
     * 返回是否是错误版本
     * @param n
     * @return
     */
    public boolean isBadVersion(int n) {
     return true;
    }
}
